package main

/**
* @Author: DengLibin
* @Date: Create in 2023-01-11 10:59:37
* @Description: 给你一个链表的头节点 head 和一个整数 val ，
请你删除链表中所有满足 Node.val == val 的节点，并返回 新的头节点 。
*/

/**
 * @Author: DengLibin
 * @Date: Create in 2023-01-11 11:00:07
 * @Description:
 */
func removeElements(head *ListNode, val int) *ListNode {
	var newHead *ListNode = head
	var preNode *ListNode = nil
	currentNode := head

	//找到新的头节点
	for currentNode != nil && currentNode.Val == val {
		currentNode = currentNode.Next
	}
	newHead = currentNode

	if newHead == nil {
		return nil
	}
	preNode = newHead
	currentNode = currentNode.Next

	for currentNode != nil {
		if currentNode.Val == val {
			currentNode = currentNode.Next
			preNode.Next = currentNode
		} else {
			preNode = currentNode
			currentNode = currentNode.Next
		}

	}
	return newHead

}
